/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hu.szamla;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Yoso
 */
@Entity
@Table(name = "szamla")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Szamla.findAll", query = "SELECT s FROM Szamla s"),
    @NamedQuery(name = "Szamla.findFelSzol", query = "SELECT s FROM Szamla s WHERE (s.szolgaltato.felhasznalonev = :szolgaltato AND s.ugyfel.felhasznalonev = :ugyfel)"),
    @NamedQuery(name = "Szamla.findByHivatkozasiSzam", query = "SELECT s FROM Szamla s WHERE s.hivatkozasiSzam = :hivatkozasiSzam"),
    @NamedQuery(name = "Szamla.findBySzamlaKelte", query = "SELECT s FROM Szamla s WHERE s.szamlaKelte = :szamlaKelte"),
    @NamedQuery(name = "Szamla.findByFizHatarido", query = "SELECT s FROM Szamla s WHERE s.fizHatarido = :fizHatarido"),
    @NamedQuery(name = "Szamla.findByOsszeg", query = "SELECT s FROM Szamla s WHERE s.osszeg = :osszeg"),
    @NamedQuery(name = "Szamla.findByUgyfel", query = "SELECT s FROM Szamla s WHERE s.ugyfel.felhasznalonev = :ugyfel ORDER by s.szamlaKelte"),
    @NamedQuery(name = "Szamla.findByLeiras", query = "SELECT s FROM Szamla s WHERE s.leiras = :leiras"),
    @NamedQuery(name = "Szamla.findByFizetve", query = "SELECT s FROM Szamla s WHERE s.fizetve = :fizetve")})
public class Szamla implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "hivatkozasi_szam")
    private String hivatkozasiSzam;
    @Basic(optional = false)
    @NotNull
    @Column(name = "szamla_kelte")
    @Temporal(TemporalType.TIMESTAMP)
    private Date szamlaKelte;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fiz_hatarido")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fizHatarido;
    @Basic(optional = false)
    @NotNull
    @Column(name = "osszeg")
    private int osszeg;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "leiras")
    private String leiras;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fizetve")
    private int fizetve;
    @JoinColumn(name = "ugyfel", referencedColumnName = "felhasznalonev")
    @ManyToOne(optional = false)
    private Felhasznalo ugyfel;
    @JoinColumn(name = "szolgaltato", referencedColumnName = "felhasznalonev")
    @ManyToOne(optional = false)
    private Felhasznalo szolgaltato;

    public Szamla() {
    }

    public Szamla(String hivatkozasiSzam) {
        this.hivatkozasiSzam = hivatkozasiSzam;
    }

    public Szamla(String hivatkozasiSzam, Date szamlaKelte, Date fizHatarido, int osszeg, String leiras, int fizetve) {
        this.hivatkozasiSzam = hivatkozasiSzam;
        this.szamlaKelte = szamlaKelte;
        this.fizHatarido = fizHatarido;
        this.osszeg = osszeg;
        this.leiras = leiras;
        this.fizetve = fizetve;
    }

    public String getHivatkozasiSzam() {
        return hivatkozasiSzam;
    }

    public void setHivatkozasiSzam(String hivatkozasiSzam) {
        this.hivatkozasiSzam = hivatkozasiSzam;
    }

    public Date getSzamlaKelte() {
        return szamlaKelte;
    }

    public void setSzamlaKelte(Date szamlaKelte) {
        this.szamlaKelte = szamlaKelte;
    }

    public Date getFizHatarido() {
        return fizHatarido;
    }

    public void setFizHatarido(Date fizHatarido) {
        this.fizHatarido = fizHatarido;
    }

    public int getOsszeg() {
        return osszeg;
    }

    public void setOsszeg(int osszeg) {
        this.osszeg = osszeg;
    }

    public String getLeiras() {
        return leiras;
    }

    public void setLeiras(String leiras) {
        this.leiras = leiras;
    }

    public int getFizetve() {
        return fizetve;
    }

    public void setFizetve(int fizetve) {
        this.fizetve = fizetve;
    }

    public Felhasznalo getUgyfel() {
        return ugyfel;
    }

    public void setUgyfel(Felhasznalo ugyfel) {
        this.ugyfel = ugyfel;
    }

    public Felhasznalo getSzolgaltato() {
        return szolgaltato;
    }

    public void setSzolgaltato(Felhasznalo szolgaltato) {
        this.szolgaltato = szolgaltato;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (hivatkozasiSzam != null ? hivatkozasiSzam.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Szamla)) {
            return false;
        }
        Szamla other = (Szamla) object;
        if ((this.hivatkozasiSzam == null && other.hivatkozasiSzam != null) || (this.hivatkozasiSzam != null && !this.hivatkozasiSzam.equals(other.hivatkozasiSzam))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "hu.szamla.Szamla[ hivatkozasiSzam=" + hivatkozasiSzam + " ]";
    }
    
}
